#!/bin/bash

# 脚本名称: ros1_topic_publisher_once.sh
# 描述: 使用 rostopic 命令发布单次 ROS1 话题消息
source /opt/ros/melodic/setup.bash
source /home/argo/catkin_ws/devel/setup.bash  # 如果使用了工作空间
# 检查 ROS 环境是否已设置
if [ -z "$ROS_DISTRO" ]; then
    echo "错误: ROS 环境未加载"
    echo "请先运行: source /opt/ros/$ROS_DISTRO/setup.bash"
    exit 1
fi

# 固定值
TOPIC_NAME="/my_car_cron"
MESSAGE_TYPE="std_msgs/String"

# 解析参数
while [[ $# -gt 0 ]]; do
    case "$1" in
        -c|--content)
            MESSAGE_CONTENT="$2"
            shift 2
            ;;
        *)
            echo "未知选项: $1"
            echo "用法: $0 -c <消息内容>"
            exit 1
            ;;
    esac
done

# 检查消息内容
if [ -z "$MESSAGE_CONTENT" ]; then
    echo "错误: 必须指定消息内容"
    echo "用法: $0 -c <消息内容>"
    exit 1
fi

# 启动 ROS 核心（如果未运行）
if ! rostopic list >/dev/null 2>&1; then
    echo "启动 roscore..."
    roscore &
    ROSCORE_PID=$!
    sleep 3
fi

echo "发布单次消息到话题: $TOPIC_NAME [$MESSAGE_TYPE]"
echo "消息内容: $MESSAGE_CONTENT"

# 使用 rostopic pub 发布单次消息
rostopic pub -1 "$TOPIC_NAME" "$MESSAGE_TYPE" "data: '$MESSAGE_CONTENT'"

# 清理
if [ -n "$ROSCORE_PID" ]; then
    kill "$ROSCORE_PID" 2>/dev/null
fi

exit 0
